iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
3
DevOps

DevOps with Proxmox系列 第 5

Day 05 - 備份 & 高可用性簡介

  • 分享至 

  • xImage
  •  

接下來來講 Proxmox VE 裡內建的備份功能與高可用性的部分

我們會實際操作看看備份,但高可用性的部分,因為會需要數台機器,而我們只使用一臺機器裝 Proxmox VE,所以在這裡沒辦法實際操作
介紹完,如果有興趣的朋友就再麻煩自己找機器來測試了

我們先來講備份吧,在 Proxmox VE 裡,備份有三種模式

  • stop
  • suspend
  • snapshot

而這三種模式在備份 VM 與備份容器時有不同的行為

在備份 VM 時

  • stop 會將 VM 完整關機,接下來在背景利用 qemu 來備份 VM,若 VM 在一開始是開機的狀態,在備份開始後,VM 會自動開機,讓備份能在背景執行而儘量不影響服務的上線狀態
  • suspend 則是在備份 VM 前,會對 VM 執行 suspend(暫停),這樣能暫時保存 VM 的狀態,確定 VM 已經順利 suspend 後,會對 VM 做 snapshot
  • snapshot 則會先建立一個快照,然後 Proxmox VE 會利用這個快照來進行備份,這樣雖然能最小化服務下線時間,但可能會造成資料不連續

而在備份容器時

  • stop 會將容器完整停止,然後備份容器,直到容器完成備份以前,容器都不會啟動,這有可能會造成極長的服務下線時間
  • suspend 則會利用 rsync 將容器裡的檔案先複製到一個暫時的地點,接下來容器會被暫停,然後會利用工具去比對第一次複製的檔案與現有容器裡的檔案的差異,然後把差異的部分再備份到暫時的地點內。這步完成後,容器會被恢復狀態,然後那些被複製出來的檔案會被包成備份
  • snapshot 則會利用快照功能。首先,會對現有的容器進行快照,接下來依據這個快照進行備份,在備份完成後,再刪除掉備份時建立的快照

在上面可以看到要 Uptime 和要備份完整性的 trade-off,好像沒有一個方法可以單純利用 Proxmox VE 同時兼顧到極低 downtime 與備份完整性

在 Proxmox VE 裡,預設建立的 local 可以用來備份,不過在利用系統硬碟備份時,同時要記得考量到,因為備份是個 IO 量相對大的工作,在系統碟上進行大量 IO 時可能會對系統內其他服務,甚至其他 VM/CT 的效能造成影響。

比較理想的方式是,另外找一個硬碟或數個硬碟,甚至是利用 NFS/Samba 來進行備份

昨天我們有建立一個 VM,我們現在就來試看看備份這個 VM

proxmox_ve_vm_100_summary

可以在左邊的選單裡看到 Backup 的選項,點進去後會看到這樣的畫面

proxmox_ve_vm_100_backup

這是這個 VM 目前擁有的備份,不過由於我們還沒備份過這個 VM,所以現在是空的
在左上角有個 Backup Now,點下去會看到這樣的選單

proxmox_ve_vm_100_backup_popup

我們可以在這裡選擇

  • 我們要備份到哪裡
  • 我們要用哪種備份方式
  • 備份的壓縮算法
  • 執行這個備份工作的資訊要寄送到哪個 Email

由於我們現在只有 local 能用來備份,所以我們就備份的儲存空間就選擇 local。而備份的模式,我們這裡示範最安全的 Stop。壓縮算法的部分選擇 ZSTD,這是一個近期新增進 Proxmox VE 的壓縮演算法,能充分利用多執行續的特性,進而提高備份速度與降低備份時間。 Email 部分則留白

選擇完備份相關的設定後,我們點 Backup,應該會看到這樣的畫面

proxmox_ve_vm_100_backup_running

可以看到 VM 被停止與被啟動的訊息,回到 Summary 的頁面的時候也能觀察到 VM 的 Uptime 被重設了,即便現在是在備份,但我們仍然能保持我們的 VM 執行狀態

備份需要點時間,備份完成後就能在 Backup 的頁面看到你的備份,如下圖

proxmox_ve_vm_100_backup

備份完後,我們也可以利用這個備份來還原機器。

首先,跟操作容器一樣,我們把這個 VM 刪掉。接下來,點開 local,應該會在儲存的檔案看到這樣的畫面

proxmox_ve_storage_local_content

可以在裡面看到我們剛才的備份,我們點一下這個備份後,上面的 Restore 按鈕就變成可以壓的狀態了
點下去後會看到這個畫面

proxmox_ve_restore_vm_100

在這個畫面,你可以設定

  • 備份要還原到哪個儲存
  • 還原的 VM/CT ID
  • 讀取備份的速度限制
  • 是否要重設 VM/CT 裡的網卡的 MAC address
  • 還原完成後是否要自動啟動 VM/CT

在這裡我們用預設值就可以順利還原了,不過如果今天是從其他地方還原 VM/CT 到這個系統上的話,可能有些地方需要注意,例如要使用的儲存、是否要重設 MAC address...等等

Restore 以後會看到這個畫面

proxmox_ve_restore_vm_100_processing

等到這個還原工作跑完後,我們的 VM 就又重新出現了

除了手動備份以外,你也可以在 Proxmox VE 裡設定排程備份

在最左手邊的列表內選擇 Datacenter,裡面有個 Backup 的選項,點開後畫面如下

proxmox_ve_datacenter_backup

我們可以在這裡設定排程備份,點上面的 Add 以新增排程備份

proxmox_ve_datacenter_backup_create_job

在這裡我們可以設定

  • 備份的儲存地點
  • 每週的哪天備份
  • 每天幾點備份
  • 要備份哪些 VM/CT
  • Email 地址
  • 什麼狀況要寄送 Email
  • 備份的壓縮算法
  • 備份的方式

如果今天有非常多 VM/CT,我們可以在這裡設定定時備份,可以省很多時間

備份的部分大概就這樣,那接下來簡單介紹一下高可用性

在 Proxmox VE 裡,如果想要使用到高可用性的功能的話,得先滿足這幾個條件

  • 要啟動 Cluster 的功能,而且最少要有三個節點
  • Cluster 內要有共用的儲存供 VM/CT 使用
  • 得要有硬體監控設備 (watchdog)

在 Proxmox VE 的 Datacenter 選項裡有個 HA,這部分就是讓你可以設定高可用性的選單,你可以在這裡設定哪些 VM/CT 需要列入高可用性的列表內,哪些節點要用來跑這些服務,以及整個 Cluster 的狀態...等資訊

在滿足 Proxmox VE 的高可用性的需求的節點內,如果要將 VM/CT 設定進 HA 的話,可以在 HA 的選單裡加入。一旦將 VM/CT 加入 HA 列表後, VM/CT 的狀態將不再由機器管理,而是透過 HA 頁面管理
在 HA 的 Resources 裡,每個 VM/CT 都具有 started,stopped,ignored 和 disabled 四個選項,而一般會使用到的就是 started & stopped 兩個狀態

若今天 HA 列表裡的 VM/CT 的狀態與要求的狀態不符合的時候, Proxmox VE 將會嘗試更改 VM/CT 的狀態,而當執行 VM/CT 的節點發生異常狀態時, Proxmox VE 會將 VM/CT 嘗試搬移到其他節點上,並在其他節點上嘗試執行 VM/CT,以此達成高可用性

由於這部分需要較多機器,故在此無法實際示範,只能簡單用文字說明一下怎麽運作的,如果有興趣的話可能就需要自己找機器來試看看 HA 的功能了

明天講 cloud-init 的部分


上一篇
Day 04 - VM 基礎
下一篇
Day 06 - cloud-init images
系列文
DevOps with Proxmox30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言